package initialize

import (
	"sync"

	"grpc-server/config"
	"grpc-server/global"

	"github.com/spf13/viper"
)

var v *viper.Viper
var viperDoOne sync.Once

func init() {
	viperDoOne.Do(func() {
		// 初始化 viper
		v = viper.New()

		// 获取环境变量
		viper.AutomaticEnv()
		// global.DEV = viper.GetBool("DEV")
	})
}

// 先读取 nacos 配置
func readLocalNacosConfig() {

	// 设置文件路径
	v.SetConfigFile("nacos.yaml")

	// 读取全部文件
	if err := v.ReadInConfig(); err != nil {
		panic(err)
	}

	// 简单获取
	//fmt.Println(v.Get("name"))

	// 解析配置文件
	c := config.NacosStruct{}
	if err := v.Unmarshal(&c); err != nil {
		panic(err)
	}

	global.NCONFIG = &c
	global.DEV = global.NCONFIG.Namespace == "dev"
}

// 再读取框架配置
func readOnlineConfig() {

	// 设置文件路径
	v.SetConfigFile("/tmp/config.yaml")

	// 读取全部文件
	if err := v.ReadInConfig(); err != nil {
		panic(err)
	}

	// 解析配置文件
	c := config.AllConfigStruct{}
	if err := v.Unmarshal(&c); err != nil {
		panic(err)
	}

	global.CONFIG = &c
}
